import os
import re
import pdfplumber
import xlwt


# 获取当前文件夹中所有的PDF文件
pdf_files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.pdf')]
path = ''
paths = "./转换之后/"
# 检查路径是否存在，如果不存在则创建
if not os.path.exists(paths):
    os.makedirs(paths)

for pdf_file in pdf_files:
    # 检查是否已经存在转换过的Excel文件，如果存在则跳过
    excel_file = pdf_file.replace('.pdf', '.xls')
    if os.path.exists(excel_file):
        continue
    # 打开PDF文件
    with pdfplumber.open(pdf_file) as pdf:
        # 获取PDF文件的页数
        num_pages = len(pdf.pages)

        # 从每一页中提取文本
        text = ''
        for page in range(num_pages):
            pdf_page = pdf.pages[page]
            text += pdf_page.extract_text()

        # 提取采购单号、料件名称、规格和发货数量
        items = re.findall(r'(\d+)\s+(\d{4}-\w+-\d{9})\s+(\d{10})\s+([\w-]+)\s+([\w-]+)\s+(\w+)\s+(\d+)', text)

    # 创建一个Excel工作簿
    workbook = xlwt.Workbook()

    # 添加一个工作表
    worksheet = workbook.add_sheet('供应商供货清单')

    # 设置表头和其他信息
    info = [
        ('发运编号：', '', '', '', '', '', '客户：', '浙江雅虎汽车部件股份有限公司', '', '', ''),
        ('供应商', '', '', '', '', '', '采购订单编号：', '', '', '', ''),
        ('供应商地址：', '', '', '', '', '', '收货地址：', '', '', '', ''),
        ('序号', '零件号', '零件名称', '到货数量', '单位', '使用车型', '到货包装数', '标准包装数', '批次', '送货通知单号', '备注')
    ]

    font_style = xlwt.easyxf('font: height 280, bold on;')  # 设置字体大小为14，加粗
    borders = xlwt.Borders()  # 创建边框对象
    borders.left = xlwt.Borders.THIN
    borders.right = xlwt.Borders.THIN
    borders.top = xlwt.Borders.THIN
    borders.bottom = xlwt.Borders.THIN
    font_style.borders = borders  # 将边框应用到字体样式粗

    # 写入表头和其他信息
    for row, row_data in enumerate(info):
        for col, cell_data in enumerate(row_data):
            worksheet.write(row + 1, col, cell_data, font_style)  # 注意这里的 row + 1 和 font_style

    for col in range(11):  # 设置所有列的宽度为15个字符宽度
        worksheet.col(col).width = 256 * 23
    # 合并第一行单元格，并将文本居中
    title_style = xlwt.easyxf('align: horiz center, vert center; font: height 280, bold on;')  # 注意这里的 align: horiz center, vert center;
    worksheet.write_merge(0, 0, 0, 10, '供应商供货清单（国内供应商）', title_style)

    # 写入提取到的数据
    font_style = xlwt.easyxf('font: height 280;')  # 字体大小为14，字体高度为字体大小的20倍
    for index, item in enumerate(items):
        worksheet.write(index + 5, 0, index + 1, font_style)
        worksheet.write(index + 5, 1, item[4], font_style)  # 零件号
        worksheet.write(index + 5, 2, item[3], font_style)  # 零件名称
        worksheet.write(index + 5, 3, int(item[6]), font_style)  # 到货数量
        worksheet.write(index + 5, 4, item[5], font_style)  # 单位
        worksheet.write(index + 5, 9, item[1], font_style)  # 送货通知单号

    # 保存Excel文件
    workbook.save('浙江雅虎.xls')
